package E_2024;

/*
    给定一个含有N个正整数的数组, 求出有多少个连续区间（包括单个正整数）, 它们的和大于等于x。
输入描述
    第一行两个整数N x（0 < N <= 100000, 0 <= x <= 10000000)
    第二行有N个正整数（每个正整数小于等于100)。
输出描述
    输出一个整数，表示所求的个数。
    注意：此题对效率有要求，暴力解法通过率不高，请考虑高效的实现方式。
示例1 输入输出示例仅供调试，后台判题数据一般不包含示例
    输入
    3 7
    3 4 7
    输出
    4
    样例解释
    第一行的3表示第二行数组输入3个数，第一行的7是比较数，用于判断连续数组是否大于该数；
    组合为 3 + 4; 3 + 4 + 7; 4 + 7; 7; 都大于等于指定的7；所以共四组。
 */
public class E_100_46 {
    public static void main(String[] args) {
        System.out.println(ans(new int[]{3,4,7},7));
        System.out.println(ans(new int[]{3,3,7},7));
        System.out.println(ans(new int[]{3,3,3},7));
    }
    public static int ans(int[] arr, int x){
        int left = 0;
        int right = 0;
        int sum = 0;
        int ans = 0;
        while(right <= arr.length - 1){
            sum += arr[right];
            while (sum >= x) {
                sum -= arr[left++];
                ans += arr.length - right;
            }
            right++;

        }
        return ans;
    }
}
